package com.bing.java.sort;

/**
 * 
 * @author bing
 *
 * 2019年11月11日 上午9:33:57
 * 
 * 冒泡法
 * 冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1),它是一种稳定的排序算法。
 * 
 * 原理：比较两个相邻的元素，将值大的元素交换至右端。
        思路：依次比较相邻的两个数，将小数放在前面，大数放在后面。即在第一趟：首先比较第1个和第2个数，将小数放前，大数放后。 
        然后比较第2个数和第3个数，将小数放前，大数放后，如此继续，直至比较最后两个数，将小数放前，大数放后。 重复第一趟步骤，直至全部排序完成。实现图
 */
public class SortMaoPao {

	public static void main(String[] args) {
		int [] a = {5,3,12,8,7};
		int[] sortMaoPao = sortMaoPao(a);
		for (int i = 0; i < sortMaoPao.length; i++) {
			System.out.println(sortMaoPao[i]);
		}
	}
	
	
	public static int [] sortMaoPao(int [] a){
		
		//最大循环次数(长度-1)
		int length = a.length - 1;
		
		for (int i = 0; i < length; i++) {
			//里面循环次数(排序好得不用再循环  总次数-外循环好得次数)
			for (int j = 0; j < length - i; j++) {
				if (a[j] > a[j+1]) {
					int temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
		return a;
	}
}
